$(document).ready(function(){
  
     var sigmaHlimb=0, H, Hout, sigmaH=0, SH=0, termo="", Khbeta, Ka, geartype, htvalue, gearlocation, Psiba, u, T2, aw, aw_buf,
     aw_preferred, mn1, mn2, mn_final;
     var ht = $("#heat_treatment");
	 var hls=$("#hls");
     var geartypeObj = $("input:radio[name=Вид зубчатой передачи]");
     var cw = $("#crownwidth");
     var sm = $("#size-main");
     var mod = $("#mod");
     var modf = $("#modf");
     var tilt = $("#tilt");
     var awar = [40, 50, 63, 71, 80, 90, 100, 112, 125, 140, 160, 180, 200, 224, 250, 280, 315, 355, 400, 450, 500, 560, 630, 710, 800, 900, 1000, 1120, 1250, 1400, 1600, 1800, 2000, 2240, 2500]; 
     var mnar = [1, 1.25, 1.375, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.5, 4, 4.5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22];
     var mnar_preferred = [];
     
     var info = $("#info");
     var itext = $("#itext");
     var vars = {};
     var buu;
     var j=0;
     var thisupname;
     var thisname;
     var thisval;
     var thatval;
     var hh;
     var report,repc1,repc2,repHTMLc1,repHTMLc2,reportHTML;
     var calc2 
     geartypeObj.change(function() {
    	 if($(this).val()=="Прямозубая"){
    		 cw.html("<option></option><option value='0.1'>0.1</option><option value='0.125'>0.125</option><option value='0.16'>0.16</option><option value='0.25'>0.25</option>");
    		 $("#tiltf").remove();
    	 }		 
    	 else if($(this).val()=="Косозубая"){
    		 cw.html("<option></option><option value='0.25'>0.25</option><option value='0.315'>0.315</option><option value='0.4'>0.4</option><option value='0.63'>0.63</option>");
    		 modf.after("<fieldset id='tiltf' class='ui-widget-content m10'><legend class='fwb'>Угол наклона линии зуба</legend><input id='tilt' class='ui-corner-all m10 ui-state-default' type='text' maxlength=4 name='Угол наклона линии зуба'></fieldset>");
    	 }
	 });
    
     ht.change(function(){
     htvalue = $(this).val();
		   switch (htvalue){
		   case "Нормализация или улучшение":
			   hh="H<sub>HB</sub>";
			   hls.html(hh+" &#8804 350");
			   $("[name=hh]").html(hh)
			   break
		   case "Объемная закалка":
			   hh="H<sub>HRC</sub>";
			   hls.html(hh+" = 40 - 50");
			   $("[name=hh]").html(hh)
			   break
		   case "Поверхностная закалка":
			   hh="H<sub>HRC</sub>";
			   hls.html(hh+" = 40 - 56");
			   $("[name=hh]").html(hh)
		   	   break
		   case "Цементация или нитроцементация":
			   hh="H<sub>HRC</sub>";
			   hls.html(hh+" = 54 - 64");
			   $("[name=hh]").html(hh)
			   break
		   case "Азотирование":
			   hh="H<sub>HV</sub>";
			   hls.html(hh+" = 550 - 750");
			   $("[name=hh]").html(hh)
			   break
		   } 
     });
 
     $("#calculate1").click(function() {
         report = '';
         reportHTML = '';
         if($("input:radio[name=Вид зубчатой передачи]:checked").val() &&
            $("#hardness").val() &&
            $("#gearlocation").val() &&
            ht.val() &&
            cw.val() &&
            $("#gear-ratio").val() &&
            $("#torque").val()){
         
         $("#info").show();
    	geartype = $("input:radio[name=Вид зубчатой передачи]:checked").val();// to change link
    	H = $("#hardness").val();
        gearlocation = $("#gearlocation").val();
    	htvalue = ht.val();
    	Psiba = cw.val();
        u = $("#gear-ratio").val();
    	T2 = $("#torque").val();
    	switch (htvalue){
    	   case "Нормализация или улучшение":
    		   sigmaHlimb = 2*H+70;
    		   SH=1.1;
    		   break
    	   case "Объемная закалка":
    		   sigmaHlimb = 18*H+150;
    		   SH=1.2;
    		   break
    	   case "Поверхностная закалка":
    		   sigmaHlimb=17*H+200;
    		   SH=1.2;
    	   	   break
    	   case "Цементация или нитроцементация":
    		   sigmaHlimb = 23*H;
    		   SH=1.2;
    		   break
    	   case "Азотирование":
    		   sigmaHlimb = 1050;
    		   SH=1.2;
    		   break
    	   }
    	if (geartype == "Прямозубая"){
    	 	if (htvalue == "Нормализация или улучшение"){
        		sigmaH=(2*(H-25)+70)/SH;
        	}    
    	        Ka = 49.5;
        }
    	else if(geartype == "Косозубая"){
        	if (htvalue == "Нормализация или улучшение"){
	    		sigmaH = (0.45*(4*H+90))/SH;
	    	}
        		Ka = 43;
        }
    	if (htvalue == "Нормализация или улучшение"){
    		switch (gearlocation){
    		case "Симметричное":
    			Khbeta = 1.075;
    			break
    		case "Несимметричное":
    			Khbeta = 1.175;
    			break
    		case "Консольное":
    			Khbeta = 1.275;
    			break
    		}
    	}	
    	else{
    		 switch (gearlocation){
	    		case "Симметричное":
	    			Khbeta = 1.15;
	    			break
	    		case "Несимметричное":
	    			Khbeta = 1.25;
	    			break
	    		case "Консольное":
	    			Khbeta = 1.35;
	    			break
	        }
    	} 	
	    	sigmaH=sigmaHlimb/SH; 
	    	 aw=Ka*(u+1)*(Math.pow(((T2*Khbeta)/(Math.pow(sigmaH, 2)*Math.pow(u, 2)*Psiba)), 0.333));
	    	 aw_buf = aw;
	
	    	
	    	var i=0, buf1, buf2;
	    		while (isNaN(aw_preferred)){
		    		if(aw_buf!=awar[i]){	
		    			if(aw_buf>=awar[i] && aw_buf<=awar[i+1]){
		    				buf1 = (awar[i+1] - awar[i])/2;
		    				buf2 = aw_buf - awar[i];
		    			//	alert(awar[i]+" "+awar[i+1]+" "+buf1+" "+buf2);
		    				if(buf2<buf1)aw_preferred = awar[i];
		    				else if (buf2>=buf1) aw_preferred = awar[i+1];
		    			}
		    			else{
		    				i++;
		    			}
		    		}	
		    		else{
		    			aw_preferred = awar[i];
		    		}	
	    		}
//    alert(" aw = "+aw+" aw_buf = "+aw_buf+ " aw_preferred = "+aw_preferred);
    	
 	    mn1 = aw_preferred*0.01;
 	    mn2 = aw_preferred*0.02;
 	    var j=0;
 	    	for (var i=0; i<mnar.length; i++) {
 	    		if(mnar[i]>=mn1 && mnar[i]<=mn2){
 	    			mnar_preferred[j] = mnar[i];
 	    			j++;	    			                         
 	    		}		    		
 	    	}
// 	   alert("mn1 = "+mn1+" mn2 = "+mn2+" mar_preferred = "+mnar_preferred[0]+", "+mnar_preferred[1]+", "+mnar_preferred[2]);
 	   mod.empty();
           mod.append("<option value=''></option>");
 	   for (var i=0; i<mnar_preferred.length; i++) {
 		   	mod.append("<option value='"+mnar_preferred[i]+"'>"+mnar_preferred[i]+"</option>");
 	   } 
 	  //--------out 
 	   var calc1="<div><span >&#963<sub>Hlimb</sub></span> = "+sigmaHlimb+" мПа</div>"+
 	   			 "<div><span >S<sub>H</sub></span> = "+SH+"</div>"+
			 	 "<div><span >[&#963<sub>H</sub>]</span> = "+sigmaH.toFixed(0)+" мПа</div>"+
			 	 "<div><span >K<sub>a</sub></span> = "+Ka+"</div>"+
			 	 "<div><span >K<sub>H&#946</sub></span> = "+Khbeta+"</div>"+
			 	 "<div><span >a<sub>wр</sub></span> = "+aw.toFixed(3)+" &#8212 расчетное значение</div>"+
 	   			 "<div><span >a<sub>w</sub></span> = "+aw_preferred+" &#8212 принятое по ГОСТу</div>";
 	   
 	   	 if(vars[$(this).attr("name")]!=$(this).attr("name")){
			 $("#info").animate({"height":"+=140px"}, "fast");
			 $("#itext div[name='"+$(this).attr("name")+"']").addClass("ioutline").html(calc1);
			 vars[$(this).attr("name")]=$(this).attr("name");
		 }
		 else{
			 $("#itext div[name='"+$(this).attr("name")+"']").addClass("ioutline").html(calc1);
		 }
 	   
    //	alert("geartype = "+geartype+" htvalue = "+htvalue+" sigmaHlimb = "+sigmaHlimb+" sigmaH = "+sigmaH+" Ka = "+Ka+" Khbeta = "+Khbeta+" Psiba = "+Psiba+" T2 = "+T2+" u = "+u+" -= aw = "+aw+" =-, aw_preferred = "+aw_preferred+" "+calc1);   	
        
            $("#geartype_out").html(geartype);
            $("#htvalue_out").html(htvalue);
            $("#H_out").html("<span>"+hh+"</span> = "+H);
            $("#T2_out").html("<span>T<sub>2</sub></span> = "+T2);
            $("#gearlocation_out").html(gearlocation);
            $("#u_out").html("<span>u</span> = "+u);
            $("#cw_out").html("<span>&#936<sub>ba</sub></span> = "+Psiba);
            $("#calc1").html(calc1);
        }
         repc1 = '\u0009Исходные данные: \r\n'+
         'Вид зубчатой передачи:  '+geartype+'; \r\n'+
         'Термическая обработка: '+htvalue+'; \r\n'+
         'Вращающий момент на колесе = '+T2+'Нм; \r\n'+
         'Расположение зубъев относительно опор: '+gearlocation+'; \r\n'+
         'Передаточное отношение передачи: '+u+'; \r\n'+
         'Коэффициент ширины венца = '+Psiba+'; \r\n \r\n'+
         '\u0009Результат расчета: \r\n'+
         'Допускаемое контактное напряжение = '+sigmaH.toFixed(3)+'; \r\n'+
         'Коэффициент неравномерности распределения нагрузки по ширине зубчатого венца = '+Khbeta+'; \r\n'+
         'Межосевое расстояние (расчетное) = '+aw.toFixed(3)+'; \r\n'+
         'Межосевое расстояние (принятое) = '+aw_preferred+': \r\n';
     report += repc1;
          repHTMLc1 = '<div><span>Вид зубчатой передачи: </span></div>'+geartype+'; \r\n'+
         '<div><span>Термическая обработка: </span></div>'+htvalue+'; \r\n'+
         '<div><span>Вращающий момент на колесе: </span></div><span>T<sub>2</sub></span> = '+T2+'Нм; \r\n'+
         '<div><span>Расположение зубъев относительно опор: </span></div>'+gearlocation+'; \r\n'+
         '<div><span>Передаточное отношение передачи: </span></div>'+u+'; \r\n'+
         '<div><span>Коэффициент ширины венца = </span></div>'+Psiba+'; \r\n \r\n'+
         '<div><span>Результат расчета: </span></div>\r\n'+
         '<div><span>Допускаемое контактное напряжение = </span></div>'+sigmaH.toFixed(3)+'; \r\n'+
         '<div><span>Коэффициент неравномерности распределения нагрузки по ширине зубчатого венца = </span></div>'+Khbeta+'; \r\n'+
         '<div><span>Межосевое расстояние (расчетное) = </span></div>'+aw.toFixed(3)+'; \r\n'+
         '<div><span>Межосевое расстояние (принятое) = </span></div>'+aw_preferred+': \r\n';
     reportHTML = repHTMLc1;
     reportHTML +=calc1;   
    });
 
     var beta, betacor, zsum, z1, z2, awcor, d1, d2, df1, df2, da1,da2, b1, b2, alphaw, xsum, x1, x2;

     $("#calculate2").click(function() {
    	 m_final = mod.val();
    	 if(geartype == "Косозубая"){
             repc2 = ''
    		 beta = $("#tilt").val();
	    	 zsum = (2*aw_preferred*Math.cos(0.01745329*beta))/m_final;
	    	 z1 = Math.round(zsum/parseFloat(u)+1);
	    	 z2 = Math.round(zsum-z1);
	    	 awcheck = 0.5*(z1+z2)*(m_final/Math.cos(0.01745329*beta));
	    	 if(awcheck != aw_preferred){
	    		var betacor=57.2957795*(Math.acos(0.5*(z1+z2)*(m_final/aw_preferred)));
	    	 }
    	
	    	 d1 = (m_final/Math.cos(0.01745329*betacor))*z1;
	    	 d2 = (m_final/Math.cos(0.01745329*betacor))*z2;
	    	 da1 = d1 + 2*m_final;
	    	 da2 = d2 + 2*m_final;
	    	 b2 = Psiba*aw_preferred;
	    	 b1 = b2+5;	    	 
	    //	 alert("beta = "+beta+" m_final = "+m_final+" zsum = "+zsum+" z1 = "+z1+" z2 = "+z2+" awcheck = "+awcheck+" betacor = "+betacor+" d1="+d1+" d2="+d2+" da1="+da1+" da2="+da2+" b1="+b1+" b2="+b2);
                   calc2 = "<div><span>m</span> = "+m_final+"</div>"+
                             "<div><span>&#946</span> = "+beta+"</div>"+
                             "<div><span>z<sub>&#931</sub></span> = "+zsum+"</div>"+
                             "<div><span>z<sub>1</sub></span> = "+z1.toFixed(3)+"</div>"+
                             "<div><span>z<sub>2</sub></span> = "+z2.toFixed(3)+"</div>"+
                             "<div><span>d<sub>1</sub></span> = "+d1.toFixed(3)+"</div>"+
                             "<div><span>d<sub>2</sub></span> = "+d2.toFixed(3)+"</div>"+
                             "<div><span>b<sub>1</sub></span> = "+b1.toFixed(3)+"</div>"+
                             "<div><span>b<sub>2</sub></span> = "+b2.toFixed(3)+"</div>";
                     $("#calc2").html(calc2); 
                     var repc2 = '\r\nМодуль нормальный  = '+m_final+' \r\n'+
                                'Угол наклона линии зуба = '+beta+' \r\n'+
                                'Коэфициент смещения - нет!'
                     report += repc2               
     	}
     	else if(geartype == "Прямозубая"){
                repc2 = ''
     		zsum = Math.round((2*aw_preferred)/m_final);
     		z1 = Math.round(zsum/(parseFloat(u)+1));
     		z2 = Math.round(zsum-z1);
     		alphaw = Math.acos(((m_final*(z1+z2))/(2*aw_preferred))*0.9396926);
     		xsum = (2.74747*(z1+z1))*(Math.tan(alphaw)-alphaw-0.014904);
     		$("#xsum").text(xsum);
     		$("#chooseX").dialog("open"); // или сделать ф-ю с возвратом х1 для кнопки ок - поставим проверку на наличие штмля     		
     		$("#chooseX").dialog({close: function(){
     			x1 = $("#x1").val();
	     		x2 = xsum - x1;
	     		d1=m_final*z1;
	     		d2=m_final*z2;
	     		df1=m_final*(z1-2.5+2*x1);
	     		df2=m_final*(z2-2.5+2*x2);
	     		da1=2*aw_preferred-df2-0.5*m_final;
	     		da2=2*aw_preferred-df1-0.5*m_final;
	     		
                 //       alert("zsum = "+zsum+" z1 = "+z1+" z2 = "+z2+" alphaw = "+alphaw+" xsum = "+xsum+" ; x1="+x1+" x2="+x2+" d1="+d1+" d2="+d2+" df1="+df1+" df2="+df2+" da1="+da1+" da2="+da2);
                             calc2 = "<div><span>z<sub>&#931</sub></span> = "+zsum.toFixed(3)+"</div>"+
                                 "<div><span>z1<sub>1</sub></span> = "+z1.toFixed(3)+"</div>"+
                                 "<div><span>z2<sub>2</sub></span> = "+z2.toFixed(3)+"</div>"+
                                 "<div><span>&#913<sub>w</sub></span> = "+alphaw.toFixed(3)+"</div>"+
                                 "<div><span>x<sub>&#931</sub></span> = "+xsum.toFixed(3)+"</div>"+
                                 "<div><span>x<sub>1</sub></span> = "+x1+"</div>"+
                                 "<div><span>x<sub>2</sub></span> = "+x2.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>1</sub></span> = "+d1.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>2</sub></span> = "+d2.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>f2</sub></span> = "+df1.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>f2</sub></span> = "+df2.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>a1</sub></span> = "+da1.toFixed(3)+"</div>"+
                                 "<div><span>d<sub>a2</sub></span> = "+da2.toFixed(3)+"</div>";

                             $("#calc2").html(calc2); 
                              repc2 = '\r\nМодуль = '+m_final+'; \r\n'+
                         'Число зубъев шестерни = '+z1+'; \r\n'+
                         'Число зубъев колеса = '+z2+'; \r\n'+
                         'Коэффициент смещения исходного контура шестерни = '+x1+'; \r\n'+
                         'Коэффициент смещения исходного контура колеса = '+x2+'; \r\n'+
                         'Угол зацепления = '+alphaw+'; \r\n'+
                         'Делительный диаметр: \r\n d1 = '+d1+'; \r\n d2 = '+d2+'; \r\n'+
                         'Диаметр окружностей впадин: \r\n df1 = '+df1+'; \r\n df2 = '+df2+'; \r\n'+
                         'Диаметр окружностей вершин: \r\n da1 = '+da1+'; \r\n da2 = '+da2+'; \r\n';
                     
                       report += repc2
                        }
     		});
              
     	}
                
     });
     //todo: generate txt,html,print
  
     $("#createreporttxt").click(function(){
         var file = air.File.documentsDirectory.resolvePath('Отчет по расчету зубчатых передач.txt');
         file.browseForSave("Save");
         file.addEventListener(air.Event.SELECT, save)
     });       
     $("#createreporthtml").click(function(){
         var w = window.open("forHTML.html","html report", "width=630, height=891");
         w.content = reportHTML;
     });    
     function save(event){
         currentFile = event.target;
         var stream = new air.FileStream();
         stream.open(currentFile, air.FileMode.WRITE);
         stream.writeMultiByte(report, air.File.systemCharset );
         stream.close();
     }
     $("#help").click(function(){
         
         var onInitialize = function (){
         htmlLoader.removeEventListener(air.Event.HTML_DOM_INITIALIZE, onInitialize);
         htmlLoader.window.message = message;
         }
         
             var createMessageEvent = function() {
                 var messageEvent = 
                 new window.runtime.flash.events.TextEvent("message", false, false, generator.getMessage());
                 dispatcher.dispatchEvent(messageEvent);
            }
         
        var windowOptions = new air.NativeWindowInitOptions();
            windowOptions.type = air.NativeWindowType.LIGHTWEIGHT;
            windowOptions.systemChrome = air.NativeWindowSystemChrome.NONE;
            
            var htmlLoader = air.HTMLLoader.createRootWindow(false, windowOptions, false);
            htmlLoader.window.nativeWindow.width = 250;
   //         htmlLoader.window.nativeWindow.y = currentScreen.bounds.height;
            htmlLoader.window.nativeWindow.alwaysInFront = true;
            htmlLoader.addEventListener(air.Event.HTML_DOM_INITIALIZE, onInitialize);
           // htmlLoader.addEventListener("layoutComplete", onComplete);
          //  htmlLoader.window.nativeWindow.addEventListener(air.Event.CLOSE, onClose);
	
        //load the html file for the window
        htmlLoader.load(new air.URLRequest("../help.html"));
         
     })
});

















